package com.gl.glcourses.services.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.gl.glcourses.repository.ILugarRepository;
import com.gl.glcourses.services.ILugarServices;
import com.gl.glcourses.vos.Confirmacion;
import com.gl.glcourses.vos.Lugar;
import com.gl.glcourses.vos.constants.Constants;

@Service
@RemotingDestination(channels = { "my-amf" })
@Transactional
public class LugarServices implements ILugarServices{

	@Autowired
	ILugarRepository repoLugar;

	@Transactional
	@Override
	public Confirmacion crearLugar(Lugar lugar) 
			throws Exception {

		Confirmacion confirmacion = new Confirmacion();
		if(lugar.getDescripcion().isEmpty() || lugar.getDescripcion().equals(null)){
			confirmacion.setEstado(Constants.CONFIRMACION_ERROR);
			confirmacion.setErrorString(Constants.LUGAR_ERROR_NOMBRE);
			return confirmacion;
		}

		//si devuelve null es porque el nombre no existe y puede ser creada
		if(repoLugar.findLugar("descripcion", lugar.getDescripcion()) != null){
			confirmacion.setEstado(Constants.CONFIRMACION_ERROR);
			confirmacion.setErrorString(Constants.LUGAR_ERROR_NOMBRE_REPETIDO);
			return confirmacion;
		}

		repoLugar.saveUpdate(lugar);
		confirmacion.setEstado(Constants.CONFIRMACION_OK);

		return confirmacion;
	}

	@Override
	public Lugar buscarLugar(Lugar lugar) 
			throws Exception {

		return (Lugar)repoLugar.findById(lugar.getId(), Lugar.class);
	}

	@Override
	public List<Lugar> listarLugares() 
			throws Exception {

		return repoLugar.getListEntity(Lugar.class);
	}

}
